#include "maison.h"
#include "string.h"
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>

/* ---------------------------------------------- JEU ----------------------------------------------*/
static void initManche(Maison * m,Joueur *j)
{
    distribuerCarte(m,j);
}

void Mise(Joueur * j,int indmain)
{
    int mise=-1;

    while(getchar()!='\n' || (mise<0 || mise>300 || mise>testCreditJoueur(j)));

    placeMise(j,mise,indmain);
    printf("   Credit actualise : %d\n\n", testCreditJoueur(j));
}

void tableCroupier(Maison* maison, int tour)
{
    int i, j;
    printf("|");
    for(j=0; j<29; j++)
    {
        printf(" ");
    }
    printf("-Main du croupier-");
    for(j=0; j<28; j++)
    {
        printf(" ");
    }
    printf("|\n");

    if(tour==1)
    {
        printf("|");
        for(j=0; j<29; j++)
        {
            printf(" ");
        }
        if(getCarte(getHandMaison(maison)->cartes, 1)!=NULL)
        {
            afficherCarte(getCarte(getHandMaison(maison)->cartes, 1));

        }
        for(j=0; j<29; j++)
        {
            printf(" ");
        }
        printf("|\n");
    }
    else
    {
        if(tour==2)
        {
            i=1;
            while(getCarte(getHandMaison(maison)->cartes, i)!=NULL)
            {
                printf("|");
                for(j=0; j<29; j++)
                {
                    printf(" ");
                }
                afficherCarte(getCarte(getHandMaison(maison)->cartes, i));
                i++;
                for(j=0; j<29; j++)
                {
                    printf(" ");
                }
                printf("|\n");
            }
        }
        else
        {
            printf("|");
            for(j=0; j<75; j++)
            {
                printf(" ");
            }
            printf("|\n");
        }
    }
}

void tableJoueur(Joueur* joueur)
{
    int i, j, l, n;
    i=1;
    while(testMiseCase(joueur, 0)+testMiseCase(joueur, 4)+testMiseCase(joueur, 8)!=0
            && (getCarte(getHandJoueur(joueur, 0)->cartes, i)!=NULL
                || getCarte(getHandJoueur(joueur, 4)->cartes, i)!=NULL
                || getCarte(getHandJoueur(joueur, 8)->cartes, i)!=NULL))/*si le joueur a au moins miser sur une case*/
    {
        printf("|");
        for(j=8; j>=0; j-=4)/*affichage des cases de gauche a droite*/
        {
            for(l=0; l<6; l++)
            {
                printf(" ");
            }
            if(testMiseCase(joueur, j)>0 && getCarte(getHandJoueur(joueur, j)->cartes, i)!=NULL)
            {
                afficherCarte(getCarte(getHandJoueur(joueur, j)->cartes, i));
            }
            else
            {
                for(l=0; l<17; l++)
                {
                    printf(" ");
                }
            }
        }
        i++;
        for(l=0; l<6; l++)
        {
            printf(" ");
        }
        printf("|\n");
    }
    printf("|");
    for(l=0; l<75; l++)
    {
        printf(" ");
    }
    printf("|\n");
    /*affichage main séparées*/
    i=1;
    for(n=1; n<4; n++)/*toutes les separations possibles*/
    {
        while(testMiseCase(joueur, 0+n)+testMiseCase(joueur, 4+n)+testMiseCase(joueur, 8+n)!=0
                && (getCarte(getHandJoueur(joueur, 0+n)->cartes, i)!=NULL
                    || getCarte(getHandJoueur(joueur, 4+n)->cartes, i)!=NULL
                    || getCarte(getHandJoueur(joueur, 8+n)->cartes, i)!=NULL))/*si le joueur a au moins miser,sur une case*/
        {
            printf("|");
            for(j=8; j>=0; j-=4)/*affichage des cases de gauche a droite*/
            {
                for(l=0; l<6; l++)
                {
                    printf(" ");
                }
                if(testMiseCase(joueur, j+n)>0 && getCarte(getHandJoueur(joueur, j+n)->cartes, i)!=NULL)
                {
                    afficherCarte(getCarte(getHandJoueur(joueur, j+n)->cartes, i));
                }
                else
                {
                    for(l=0; l<17; l++)
                    {
                        printf(" ");
                    }
                }
            }
            i++;
            for(l=0; l<6; l++)
            {
                printf(" ");
            }
            printf("|\n");
        }
    }
}

/*void afficherTable(Maison* maison, Joueur* joueur, int tour)
{

}*/

int choixJoueur(Maison* maison, Joueur* joueur, int i, int j)
{
    int finTirage, choix, k;
    finTirage=0;
    while(finTirage!=1)
    {
        choix=0;
        if(j<2 && testSeparerHand(getHandJoueur(joueur, i)))/*si la main peut etre separee on propose le choix*/
        {
            while(finTirage!=1)
            {
                choix=0;
                while(choix<1 || choix>2)
                {
                    printf("Souhaitez vous : [ Separer votre main (1) ||  Jouer votre main (2) ]\n");
                    scanf("%d",&choix);
                    while(getchar() != '\n');/*vidage buffer*/
                }
                switch(choix)
                {
                case 1:
                    printf("Vous separez votre main.\n");
                    if(getIndiceHand(getHandJoueur(joueur, i))<=3)
                    {
                        k=2;
                    }
                    else
                    {
                        k=1;
                    }
                    separationHand(joueur, maison, i);
                    /*afficherTable(maison, joueur, 1);*/
                    printf("  Valeur de votre main =%u\n\n", getValeurMain(getHandJoueur(joueur, i)));
                    /*afficherTable(maison, joueur, 1);*/
                    printf("  Valeur de votre main =%u\n\n", getValeurMain(getHandJoueur(joueur, i)));
                    j=choixJoueur(maison, joueur, i, j+1);/*on joue la premiere main resultant de la separation*/
                    /*afficherTable(maison, joueur, 1);*/
                    printf("  Valeur de votre main =%u\n\n", getValeurMain(getHandJoueur(joueur, i+k)));
                    printf("\ncase 1\n");
                    choixJoueur(maison, joueur, i+k, j);/*on joue la seconde main issue de la separtion*/
                    finTirage=1;
                    break;

                case 2:
                    printf("Vous jouez votre main.\n");
                    choixJoueur(maison, joueur, i, 4);/*on joue la main normalement*/
                    finTirage=1;
                    break;

                default:
                    printf("!!!!!!!!!!!!!ERREUR TIRAGE SEPARATION!!!!!!!!!!!!");
                    finTirage=1;
                    break;
                }
            }
        }
        else
        {
            while(choix<1 || choix>3)
            {
                printf("Souhaitez vous : [ Tirer une carte (1) ||  Doubler la mise (2) || Rester (3) ]\n");
                scanf("%d",&choix);
                while(getchar() != '\n');/*vidage buffer*/
            }
            switch(choix)
            {
            case 1:
                printf("Vous demandez une carte.\n");
                piocherCarte(joueur->jeu[i].hand, maison);
                valeurHand(joueur->jeu[i].hand);
                /*afficherTable(maison, joueur, 1);*/
                if(joueur->jeu[i].assurance!=0)printf("\nAssurance =%u\n", joueur->jeu[i].assurance);
                printf("  Valeur de votre main =%u\n\n", getValeurMain(joueur->jeu[i].hand));
                finTirage=(getValeurMain(joueur->jeu[i].hand)>=21);/* on propose le tirage jusqu'a ce que le joueur obtienne un natural(21 en 3 cartes) ou saute*/
                break;

            case 2:
                printf("Vous doublez votre mise.\n");
                doubleMise(joueur,i);
                piocherCarte(joueur->jeu[i].hand,maison);
                valeurHand(joueur->jeu[i].hand);
                /*afficherTable(maison, joueur, 1);*/
                if(joueur->jeu[i].assurance!=0)printf("\nAssurance =%u\n", joueur->jeu[i].assurance);
                printf("  Valeur de votre main =%u\n\n", getValeurMain(joueur->jeu[i].hand));
                finTirage=1;
                break;


            case 3:
                printf("Vous restez.\n\n");
                finTirage=1;
                break;

            default:
                printf("!!!!!!!!!!!!!ERREUR TIRAGE!!!!!!!!!!!!");
                finTirage=1;
                break;
            }
        }
    }
    return j;
}


void tourJoueur(Maison* maison, Joueur* joueur)
{
    /* triche pour Cata
    Carte *carte1, *carte2;
    carte1=malloc(sizeof(Carte));
    carte2=malloc(sizeof(Carte));
    resetCarte(carte1);
    resetCarte(carte2);
    setCouleurCarte(carte1, PIQUE);
    setCouleurCarte(carte2, PIQUE);
    setFaceCarte(carte1, AS);
    setFaceCarte(carte2, VALET);
    joueur->jeu[4].hand->cartes->ad->info=carte1;
    joueur->jeu[4].hand->cartes->ad->suivant->info=carte2;
    valeurHand(joueur->jeu[4].hand);
    fin triche*/


    int i;
    /*afficherTable(maison, joueur, 1);*/
    proposerAssurance(maison, joueur);
    for(i=0; i<11; i+=4)
    {
        if(testMiseCase(joueur, i)>0)/* si le joueur n'a pas miser ou si il a un Blackjack on ne lui propose pas d'action*/
        {
            if(testBlackjack(getHandJoueur(joueur, i)))
            {
                printf("  BLACKJACK ! case %i\n\n", i/4+1);
            }
            else
            {
                printf("  Valeur de votre main =%u\n\n", getValeurMain(joueur->jeu[i].hand));
                choixJoueur(maison, joueur, i, 0);
            }
        }
        /*afficherTable(maison, joueur, 1);*/
        printf("\nFin tirage %u\n", getIndiceHand(joueur->jeu[i].hand));
    }
}/* A la fin du tour du joueur toutes ses cartes ont etees servies*/

void tourMaison(Maison* maison, Joueur* joueur)
{
    int j;
    tirageMaison(maison, 17);
    /*afficherTable(maison, joueur, 2);*/
    printf("  Valeur de la main de la banque =%u\n\n", getValeurMain(maison->handMaison));
    for(j=0; j<12; j++)
    {
        if(testMiseCase(joueur, j)!=0)
        {
            /*printf("\n----- Resultat main %u -----\n", joueur->jeu[j].hand->indice);*/
            if(testBlackjack(joueur->jeu[j].hand))
            {
                printf("\nVous avez un Blackjack!\nVous etes paye a 3 pour 2\n");
            }
            else
            {
                switch(gagneHand(joueur->jeu[j].hand, maison->handMaison))
                {
                case 1:
                    printf("\nVous gagnez! La banque paye 1 pour 1\n");
                    break;
                case 0:
                    printf("\nLa banque gagne.\n");
                    break;
                case -1:
                    printf("\nEgalite. Remboursement de votre mise.\n");
                    break;
                default:
                    printf("\nERREUR RESULTAT\n");
                    break;
                }
            }
            payerJoueur(maison, joueur, j);
        }
    }
}

char* continuerQuitter(char* continuer, Joueur* joueur)
{
    *continuer='f';
    while(*continuer!='c' && *continuer!='q')
    {
        printf("\nVoulez vous continuer la partie? [c] ou quitter la table? [q]\n");
        *continuer = getchar() | 0x20;
        while(getchar()!='\n');
    }
    switch(*continuer)
    {
    case 'c':
        printf("\nVous avez choisi de continuer.\n\n");
        break;
    case 'q':

        printf("\nVous avez choisi de quitter. Votre gain est de %d$\n\n", joueur->credit-2000);
        break;
    default:
        printf("\nERREUR SAISIE.\n\n");
        break;
    }
    return continuer;
}

void play()
{
    Maison * maison;
    Joueur * joueur;
    char continuer;
    int manche, i, credit;
    manche=0;
    continuer='f';
    joueur=initJoueur();
    initJeuJoueur(joueur);
    maison=initMaison();
    maison->handMaison=initHand();
    crediteJoueur(joueur, 2000);
    /*structure et credit initialise*/

    while(testCreditJoueur(joueur)>0 && continuer!='q')/*condition de fin de jeu*/
    {

        if(manche!=0)/*Réinitialisation de la table après chaque donne*/
        {
            detruitHand(&maison->handMaison);
            libereJeu(joueur);
            initJeuJoueur(joueur);
            maison->handMaison=initHand();
        }

        printf("   Credit actuel : %d\n", testCreditJoueur(joueur));
        credit=testCreditJoueur(joueur);

        for(i=0; i<3; i++)/*Demande au joueur de miser sur des case*/
        {
            Mise(joueur, 4*i);
        }
        if(credit==testCreditJoueur(joueur))/*si le joueur n'a rien miser on quitte le jeu*/
        {
            continuer='q';
        }
        else/*sinon on poursuit le jeu normalement*/
        {
            manche++;
            printf("TEST\n");
            initManche(maison, joueur);/*sert les cartes sur les cases ou il y a une mise et la maison*/
            /*test separation
            joueur->jeu[0].hand->cartes->ad->info=&maison->sabot->jeuCarte[5];
            joueur->jeu[0].hand->cartes->ad->suivant->info=&maison->sabot->jeuCarte[5];
            test separation*/
            /*test assurance*/
            /*maison->handMaison->cartes->ad->info=&maison->sabot->jeuCarte[12];*/
            /*fin test assurance*/
            /*afficherTable(maison, joueur, 1);*/
            tourJoueur(maison, joueur);/*le joueur joue sur les case ou il a miser*/
            printf("\nTour Joueur termine\n");

            tourMaison(maison, joueur);
            printf("\nTour Maison termine\n");
            continuerQuitter(&continuer, joueur);
        }
    }
    detruireMaison(&maison);
    if(testCreditJoueur(joueur)==0)
    {
        printf("\n Vous n'avez plus de jetons veuillez quitter la table\n");
    }
    detruisJoueur(&joueur);
    printf("\nA bientot\n\n");
}

/*static int testCollision(int m_x, int m_y, int s_xg,int s_yg, int s_xd,int s_yd) menu avec souris
{
	return (s_xg < m_x && s_xd > m_x && s_yg < m_y && s_yd > m_y );
}*/

void jeu()
{
    SDL_Event event;
    int continuer = 1, continuer2 =1;
    SDL_Surface *ecran = NULL, *fond = NULL;
    SDL_Surface *bjouer = NULL, *bcredit = NULL, *baide = NULL, *bquitter = NULL;
    SDL_Rect position;
    int compteur=1;
    int i=1;
    SDL_Surface *mise = NULL;
    SDL_Surface *j1 = NULL, *j2 = NULL, *j3 = NULL, *j4 = NULL,*j5 = NULL, *valider = NULL;
    int j=1,misej=0;
    int compteur2=1;

    position.x = 0;
    position.y = 0;

    SDL_Init(SDL_INIT_VIDEO);

    SDL_WM_SetIcon(SDL_LoadBMP("../data/iconeBj.bmp"), NULL);

    ecran = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE | SDL_DOUBLEBUF );
    SDL_WM_SetCaption("Chargement d'images en SDL", NULL);

    fond = IMG_Load("../../blackjack/menu.png");

    SDL_BlitSurface(fond, NULL, ecran,&position);

    SDL_Flip(ecran);

    while (continuer)
    {
        switch(i)
        {
        case 1:
            SDL_FreeSurface(bjouer);
            SDL_FreeSurface(bcredit);
            SDL_FreeSurface(baide);
            SDL_FreeSurface(bquitter);

            bjouer = IMG_Load("../../blackjack/jouer_on.png");
            bcredit = IMG_Load("../../blackjack/credit.png");
            baide = IMG_Load("../../blackjack/aide.png");
            bquitter = IMG_Load("../../blackjack/quitter.png");
            SDL_BlitSurface(fond, NULL, ecran, &position);
            SDL_BlitSurface(bjouer, NULL, ecran, &position);
            SDL_BlitSurface(bcredit, NULL, ecran, &position);
            SDL_BlitSurface(baide, NULL, ecran, &position);
            SDL_Flip(ecran);
            break;
        case 2:
            SDL_FreeSurface(bjouer);
            SDL_FreeSurface(bcredit);
            SDL_FreeSurface(baide);
            SDL_FreeSurface(bquitter);

            bjouer = IMG_Load("../../blackjack/jouer.png");
            bcredit = IMG_Load("../../blackjack/credit_on.png");
            baide = IMG_Load("../../blackjack/aide.png");
            bquitter = IMG_Load("../../blackjack/quitter.png");
            SDL_BlitSurface(fond, NULL, ecran, &position);
            SDL_BlitSurface(bjouer, NULL, ecran, &position);
            SDL_BlitSurface(bcredit, NULL, ecran, &position);
            SDL_BlitSurface(baide, NULL, ecran, &position);
            SDL_Flip(ecran);
        case 3:
            SDL_FreeSurface(bjouer);
            SDL_FreeSurface(bcredit);
            SDL_FreeSurface(baide);
            SDL_FreeSurface(bquitter);

            bjouer = IMG_Load("../../blackjack/jouer.png");
            bcredit = IMG_Load("../../blackjack/credit.png");
            baide = IMG_Load("../../blackjack/aide_on.png");
            bquitter = IMG_Load("../../blackjack/quitter.png");
            SDL_BlitSurface(fond, NULL, ecran, &position);
            SDL_BlitSurface(bjouer, NULL, ecran, &position);
            SDL_BlitSurface(bcredit, NULL, ecran, &position);
            SDL_BlitSurface(baide, NULL, ecran, &position);
            SDL_Flip(ecran);
        case 4:
            SDL_FreeSurface(bjouer);
            SDL_FreeSurface(bcredit);
            SDL_FreeSurface(baide);
            SDL_FreeSurface(bquitter);

            bjouer = IMG_Load("../../blackjack/jouer.png");
            bcredit = IMG_Load("../../blackjack/credit.png");
            baide = IMG_Load("../../blackjack/aide.png");
            bquitter = IMG_Load("../../blackjack/quitter_on.png");
            SDL_BlitSurface(fond, NULL, ecran, &position);
            SDL_BlitSurface(bjouer, NULL, ecran, &position);
            SDL_BlitSurface(bcredit, NULL, ecran, &position);
            SDL_BlitSurface(baide, NULL, ecran, &position);
            SDL_Flip(ecran);

        }
        compteur = 1;
        while(compteur)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                case SDLK_UP:
                    switch(i)
                    {
                    case 1:
                        i=2;
                        break;
                    case 2:
                        i=1;
                        break;
                    case 3:
                        i=2;
                        break;
                    case 4:
                        i=2;
                        break;
                    }
                    break;
                case SDLK_DOWN:
                    switch(i)
                    {
                    case 1:
                        i=2;
                        break;
                    case 2:
                        i=1;
                        break;
                    case 3:
                        i=1;
                        break;
                    case 4:
                        i=1;
                        break;
                    }
                    break;
                case SDLK_RIGHT:
                    switch(i)
                    {
                    case 1:
                        i=3;
                        break;
                    case 2:
                        i=3;
                        break;
                    case 3:
                        i=4;
                        break;
                    case 4:
                        i=3;
                        break;
                    }
                    break;
                case SDLK_LEFT:
                    switch(i)
                    {
                    case 1:
                        i=4;
                        break;
                    case 2:
                        i=4;
                        break;
                    case 3:
                        i=4;
                        break;
                    case 4:
                        i=3;
                        break;
                    }
                    break;
                case SDLK_ESCAPE:
                    continuer = 0;
                    break;
                case SDLK_RETURN:
                    switch(i)
                    {
                    case 1: /* on entre dans la phase de mise */
                        SDL_FreeSurface(fond);
                        SDL_FreeSurface(bjouer);
                        SDL_FreeSurface(bcredit);
                        SDL_FreeSurface(baide);
                        SDL_FreeSurface(bquitter);

                        mise = IMG_Load("../../blackjack/mise.png");
                        SDL_BlitSurface(mise, NULL, ecran, &position);
                        SDL_Flip(ecran);

                        while(continuer2)
                        {
                            switch(j)
                            {
                                 case 1: /* jeton 1 */
                                SDL_FreeSurface(j1);
                                SDL_FreeSurface(j2);
                                SDL_FreeSurface(j3);
                                SDL_FreeSurface(j4);
                                SDL_FreeSurface(j5);
                                SDL_FreeSurface(valider);

                                j1 = IMG_Load("../../blackjack/j1L.png");
                                j2 = IMG_Load("../../blackjack/j5.png");
                                j3 = IMG_Load("../../blackjack/j10.png");
                                j4 = IMG_Load("../../blackjack/j25.png");
                                j5 = IMG_Load("../../blackjack/j100.png");
                                valider = IMG_Load("../../blackjack/valider.png");
                                SDL_BlitSurface(mise, NULL, ecran, &position);
                                SDL_BlitSurface(j1, NULL, ecran, &position);
                                SDL_BlitSurface(j2, NULL, ecran, &position);
                                SDL_BlitSurface(j3, NULL, ecran, &position);
                                SDL_BlitSurface(j4, NULL, ecran, &position);
                                SDL_BlitSurface(j5, NULL, ecran, &position);
                                SDL_BlitSurface(valider, NULL, ecran, &position);
                                SDL_Flip(ecran);
                                break;
                            case 2: /* jeton 5 */
                                SDL_FreeSurface(j1);
                                SDL_FreeSurface(j2);
                                SDL_FreeSurface(j3);
                                SDL_FreeSurface(j4);
                                SDL_FreeSurface(j5);
                                SDL_FreeSurface(valider);

                                j1 = IMG_Load("../../blackjack/j1.png");
                                j2 = IMG_Load("../../blackjack/j5L.png");
                                j3 = IMG_Load("../../blackjack/j10.png");
                                j4 = IMG_Load("../../blackjack/j25.png");
                                j5 = IMG_Load("../../blackjack/j100.png");
                                valider = IMG_Load("../../blackjack/valider.png");
                                SDL_BlitSurface(mise, NULL, ecran, &position);
                                SDL_BlitSurface(j1, NULL, ecran, &position);
                                SDL_BlitSurface(j2, NULL, ecran, &position);
                                SDL_BlitSurface(j3, NULL, ecran, &position);
                                SDL_BlitSurface(j4, NULL, ecran, &position);
                                SDL_BlitSurface(j5, NULL, ecran, &position);
                                SDL_BlitSurface(valider, NULL, ecran, &position);
                                SDL_Flip(ecran);
                                break;
                            case 3: /* jeton 10 */
                                SDL_FreeSurface(j1);
                                SDL_FreeSurface(j2);
                                SDL_FreeSurface(j3);
                                SDL_FreeSurface(j4);
                                SDL_FreeSurface(j5);
                                SDL_FreeSurface(valider);

                                j1 = IMG_Load("../../blackjack/j1.png");
                                j2 = IMG_Load("../../blackjack/j5.png");
                                j3 = IMG_Load("../../blackjack/j10L.png");
                                j4 = IMG_Load("../../blackjack/j25.png");
                                j5 = IMG_Load("../../blackjack/j100.png");
                                valider = IMG_Load("../../blackjack/valider.png");
                                SDL_BlitSurface(mise, NULL, ecran, &position);
                                SDL_BlitSurface(j1, NULL, ecran, &position);
                                SDL_BlitSurface(j2, NULL, ecran, &position);
                                SDL_BlitSurface(j3, NULL, ecran, &position);
                                SDL_BlitSurface(j4, NULL, ecran, &position);
                                SDL_BlitSurface(j5, NULL, ecran, &position);
                                SDL_BlitSurface(valider, NULL, ecran, &position);
                                SDL_Flip(ecran);
                                break;
                            case 4: /* jeton 25 */
                                SDL_FreeSurface(j1);
                                SDL_FreeSurface(j2);
                                SDL_FreeSurface(j3);
                                SDL_FreeSurface(j4);
                                SDL_FreeSurface(j5);
                                SDL_FreeSurface(valider);

                                j1 = IMG_Load("../../blackjack/j1.png");
                                j2 = IMG_Load("../../blackjack/j5.png");
                                j3 = IMG_Load("../../blackjack/j10.png");
                                j4 = IMG_Load("../../blackjack/j25L.png");
                                j5 = IMG_Load("../../blackjack/j100.png");
                                valider = IMG_Load("../../blackjack/valider.png");
                                SDL_BlitSurface(mise, NULL, ecran, &position);
                                SDL_BlitSurface(j1, NULL, ecran, &position);
                                SDL_BlitSurface(j2, NULL, ecran, &position);
                                SDL_BlitSurface(j3, NULL, ecran, &position);
                                SDL_BlitSurface(j4, NULL, ecran, &position);
                                SDL_BlitSurface(j5, NULL, ecran, &position);
                                SDL_BlitSurface(valider, NULL, ecran, &position);
                                SDL_Flip(ecran);
                                break;
                            case 5: /* jeton 100 */
                                SDL_FreeSurface(j1);
                                SDL_FreeSurface(j2);
                                SDL_FreeSurface(j3);
                                SDL_FreeSurface(j4);
                                SDL_FreeSurface(j5);
                                SDL_FreeSurface(valider);

                                j1 = IMG_Load("../../blackjack/j1.png");
                                j2 = IMG_Load("../../blackjack/j5.png");
                                j3 = IMG_Load("../../blackjack/j10.png");
                                j4 = IMG_Load("../../blackjack/j25.png");
                                j5 = IMG_Load("../../blackjack/j100L.png");
                                valider = IMG_Load("../../blackjack/valider.png");
                                SDL_BlitSurface(mise, NULL, ecran, &position);
                                SDL_BlitSurface(j1, NULL, ecran, &position);
                                SDL_BlitSurface(j2, NULL, ecran, &position);
                                SDL_BlitSurface(j3, NULL, ecran, &position);
                                SDL_BlitSurface(j4, NULL, ecran, &position);
                                SDL_BlitSurface(j5, NULL, ecran, &position);
                                SDL_BlitSurface(valider, NULL, ecran, &position);
                                SDL_Flip(ecran);
                                break;
                            case 6: /* Valider */
                                SDL_FreeSurface(j1);
                                SDL_FreeSurface(j2);
                                SDL_FreeSurface(j3);
                                SDL_FreeSurface(j4);
                                SDL_FreeSurface(j5);
                                SDL_FreeSurface(valider);

                                j1 = IMG_Load("../../blackjack/j1.png");
                                j2 = IMG_Load("../../blackjack/j5.png");
                                j3 = IMG_Load("../../blackjack/j10.png");
                                j4 = IMG_Load("../../blackjack/j25.png");
                                j5 = IMG_Load("../../blackjack/j100L.png");
                                valider = IMG_Load("../../blackjack/validerL.png");
                                SDL_BlitSurface(mise, NULL, ecran, &position);
                                SDL_BlitSurface(j1, NULL, ecran, &position);
                                SDL_BlitSurface(j2, NULL, ecran, &position);
                                SDL_BlitSurface(j3, NULL, ecran, &position);
                                SDL_BlitSurface(j4, NULL, ecran, &position);
                                SDL_BlitSurface(j5, NULL, ecran, &position);
                                SDL_BlitSurface(valider, NULL, ecran, &position);
                                SDL_Flip(ecran);
                                break;
                            }
                            compteur2=1;
                            while(compteur2)
                            {
                                SDL_WaitEvent(&event);
                                switch(event.type)
                                {
                                case SDL_QUIT:
                                    continuer2 = 0;
                                    break;
                                case SDL_KEYDOWN:
                                    SDL_WaitEvent(&event);
                                    switch(event.key.keysym.sym)
                                    {
                                    case SDLK_RIGHT:
                                        switch(j)
                                        {
                                        case 1:
                                            j=2;
                                            break;
                                        case 2:
                                            j=3;
                                            break;
                                        case 3:
                                            j=4;
                                            break;
                                        case 4:
                                            j=5;
                                            break;
                                        case 5:
                                            j=6;
                                            break;
                                        case 6:

                                            j=1;
                                            break;
                                        }
                                    case SDLK_LEFT:
                                        switch(j)
                                        {
                                        case 1:
                                            j=5;
                                            break;
                                        case 2:
                                            j=1;
                                            break;
                                        case 3:
                                            j=2;
                                            break;
                                        case 4:
                                            j=3;
                                            break;
                                        case 5:
                                            j=4;
                                            break;
                                        case 6:

                                            j=1;
                                            break;
                                        }
                                    }
                                }
                            }

                        }
                        break; /* break du case 1 */
                    case 2:
                        /* On affiche les crédits */
                        break;
                    case 3:
                        /* On affiche l'aide */
                        break;
                    case 4:
                        continuer=0;
                        break;
                    }
                }
                break;
            }
            compteur=0;
        }
    }

    SDL_FreeSurface(fond);
    SDL_FreeSurface(bjouer);
    SDL_FreeSurface(bcredit);
    SDL_FreeSurface(baide);
    SDL_FreeSurface(bquitter);
    SDL_Quit();

}


int main()
{

    jeu();
    return 0;
}

